最新內容更新於 使用 Travis CI / Azure PipeLines 發佈 Artifact 到 Dropbox
吉米
: 既然,可以運用 CI Server 自動建置、自動測試、發訊息,那再接下來,應該就是自動發佈了吧。
Eric
: 沒錯,不過發佈類型不同,設定也有所差異。
吉米
: 可以先介紹一下安裝檔的發佈嗎?
Eric
: 好啊。
由於先前使用的 CI Server 全部是現有的雲端服務,或是自行架構在 Azure 的虛擬機器。
所以期望 CI Server 也可以將檔案,自動發佈到網路空間,以下,筆者試著將軟體發佈到 DropBox 之中。
檔案上傳到 Dropbox 時,筆者運用 andreafabrizi 在 GitHub ,所分享的 Dropbox-Uploader ,以簡化介接 Dropbox API 的工作量。
首先,先到 Dorpbox Developers ,會看到以下的畫面,
按下 Create app
後,創立一個提供 CI Server 使用的 API。
完成建立後,直接到 OAuth 2
的區域取得 Token 值,這會用在 Dropbox_Uploader.sh
之中。
要注意的是,dropbox_uploader.sh
中,是將 先前取得的 Dropbox OAuth2 的 Token 另存檔案。但這情況不適合用在 CI Server ,所以對 dropbox_uploader.sh
進行部份修改。
# step 1
# 到 #Default values 增加 Token
OAUTH_ACCESS_TOKEN=73x2khI0WgMAAAAAAACQT9o8kMlODtz48GhinV9sq2lRCZq8RzIpLMBkVb2575wy
# Step 2
# 將 SETUP 區域的部份 mark 掉
並將修改後的 dropbox_upload.sh
放到 Repository 的目錄下。
Travis CI 提供許多現成的發佈方式,例如 GitHub Release, AWS S3, Azure Web App, NPM, …… ,但由於我們要將程式發佈到 DropBox 之中,所以使用 Custom Deploy
。
deploy:
provider: script
script: bash scripts/deploy.sh
on:
branch: master
在 yaml 指令中,看到 bash scipts/deploy.sh
這個指令。它的意思是,要去執行 scripts 這個資料夾中,deploy.sh 這個 shell 檔案。
依 Travis CI 建議的做法,是比軟好的方式,但筆者則是採用另一程做法。直接在 .travis.yml
的 script
區段,執行上傳的動作。
language: csharp
solution: IronmanDemo.sln
mono: none
dotnet: 2.1.300
script:
- dotnet restore
- dotnet build --configuration Release
- dotnet test Calculate.Tests/Calculate.Tests.csproj
# 上傳到 dropbox 的檔案清單
- bash dropbox_uploader.sh upload IronmanDemo/bin/Release 2019Ironman/Travis
在 Azure Pipeline 的部份,筆者參考官方文件的說明。
- task: ShellScript@2
inputs:
scriptPath:
#args: '' # Optional
#disableAutoCwd: false # Optional
#cwd: '' # Optional
#failOnStandardError: false
先將 dropbox-uploader.sh
放到 repository 之中。
再到 azure-pipeline.yml
中,加入 dropbox-uploader.sh
的調用。
- task: ShellScript@2
inputs:
scriptPath: .\dropbox_uploader.sh
args: upload IronmanDemo/bin 2019Ironman/AzureDevOps
說個題外話,筆者在實作時,沒有注意到參數要用 args
這個 key 值載入。試了很多次,才發發現這個錯誤,哈哈哈。
吉米
: 透過 shell script 的操作,CI Server 的運用,就更加靈活。
Eric
: 是啊,也要謝謝 andreafabrizi 分享上傳 dropbox 的 shell,大量簡化了與 Dropbox API 串接的工程。
吉米
: 真的。剛剛看了一下 dropbox 的說明文件,如果都自己來,那工可就多了。
<< 待續 >>